#pragma once
#include "const.hpp"

template <typename T1 = IntConst<0>, 
          typename T2 = IntConst<0>,
          typename T3 = IntConst<0>,
          typename T4 = IntConst<0>,
          typename T5 = IntConst<0>,
          typename T6 = IntConst<0>,
          typename T7 = IntConst<0>,
          typename T8 = IntConst<0>,
          typename T9 = IntConst<0>,
          typename T10 = IntConst<0> >
class Mixer
{
public:
    typedef float ReturnType;
    float operator()()
    {
        return in1_() +
            in2_() +
            in3_() +
            in4_() +
            in5_() +
            in6_() +
            in7_() +
            in8_() +
            in9_() +
            in10_();
    }
private:
    T1 in1_;
    T2 in2_;
    T3 in3_;
    T4 in4_;
    T5 in5_;
    T6 in6_;
    T7 in7_;
    T8 in8_;
    T9 in9_;
    T10 in10_;
};
